package org.fanximall.erp.product.infrastructure.builder;

import org.fanximall.erp.product.domain.model.AttributeItemModel;
import org.fanximall.erp.product.domain.model.AttributeValueModel;
import org.fanximall.erp.product.infrastructure.dao.entity.ProductConfAttributeItemsDO;
import org.fanximall.erp.product.infrastructure.dao.entity.ProductConfAttributeValueDO;
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;

import java.util.List;


/**
 * @author :  william
 * @version :  V1.0  created in 2024/4/23
 */
@Mapper(componentModel = "spring")
public interface AttributeBuilder {



    @Mappings({
            @Mapping(source = "attrItemName", target = "name"),
            @Mapping(source = "attrType", target = "attrTypeDict"),
            @Mapping(source = "inputMode",target = "inputModelDict"),
            @Mapping(source = "unit",target = "unitDict"),
            @Mapping(source = "dataFormat",target = "dataFormatDict"),
            @Mapping(source = "attrDescription",target = "desc")
    })
    ProductConfAttributeItemsDO productConfAttributeItemsBuild(AttributeItemModel attribute);

    @InheritInverseConfiguration(name = "productConfAttributeItemsBuild")
    AttributeItemModel attributeItemModelBuild(ProductConfAttributeItemsDO productConfAttributeItemsDO);


    List<AttributeItemModel> attributeItemModelBuildList(List<ProductConfAttributeItemsDO> productConfAttributeItemDOS);

    @Mappings({
            @Mapping(source = "attrValue", target = "attrValue"),
            @Mapping(source = "attrItemId", target = "attrItemId")
    }
    )
    List<ProductConfAttributeValueDO> productConfAttributeValueBuild(List<AttributeValueModel> attributeValue);


    List<AttributeValueModel> attributeValueBuild(List<ProductConfAttributeValueDO> productConfAttributeValueDOS);
}
